//定义LinkedList类
//（1）定义一个辅助类Node
/*
[1]定义类的语法
类名的首字母一定要大写
class 类名{
    //通过构造方法来初始化数据
    consturctor(){
        //进行数据的初始化
    }
    //普通方法
    //function1(){}
    //function2(){}
    //function3(){}
}
[2]使用类
//对象名称和类名不能一眼
const 对象名称=new 类名();
*/

//（1）定义一个辅助类Node
class Node {
    constructor(data) {
        //保存元素用
        this.element = data;
        //指向下个节点
        this.next = undefined;
    }
}
//定义LinkedList类
class LinkedList {
    constructor() {
            this.head = undefined;
            this.length = 0;
        }
        //实现具体的方法
        //1.从尾部进行插入
    push(data) {
        //1.从外部插入元素
        const node = new Node(data);
        let current;
        //分情况讨论
        //（1.1）插入值为第一个元素
        if (this.head == null) {
            this.head = node;
        } else {
            //链表从头开始查询，没有索引
            current = this.head;
            //对于无法确定循环次数的循环，使用while
            while (current.next != null) {
                current = current.next;
            }
            //等找到最后的位置，将新的node插入到该位置之后
            current.next = node;
        }
        this.length++;

    }

}
//进行测试
const linkedlist = new LinkedList();
linkedlist.push('a');
linkedlist.push('b');
linkedlist.push('c');
console.log(linkedlist);